package cn.web.tunnelrobot.util;

import java.text.DecimalFormat;

/**
 * @description:沉降、收敛值计算
 * @author: LiChuang
 * @createDate: 2021-06-25
 * @version: 1.0
 */
public class Calculate {
    public static Double angleTwo=30.0;
    //沉降值计算 convergence收敛值宽度  settle沉降值 高度

    /**
     * 收敛值计算
     * @param width 宽
     * @param angle 角度
     * @return 单位 毫米
     */
    public static Float convergenceValue(Double width,Integer angle){
       // return width * 1000;
        return doubleToFloat(width * Math.cos(Math.PI/180*angle)*1000);
    }

    /**
     * 收敛值位置计算（和上一个公式对应/多少米处沉降值）
     * @param location 所在位置
     * @param width 宽
     * @param angle 角度
     * @return 单位 米
     */
    public static Float convergenceValue(Integer location, Double width,Integer angle){
        return doubleToFloat(location + width * Math.sin(Math.PI/180*angle));
    }
    /**
     * 沉降值计算
     * @param height 高
     * @return 单位 毫米
     */
    public static Float settValue(Double height){
        //return height * 1000;
        //沉降值单位由米变为毫米 这里30度为激光模块的固定夹角 可根据不同隧道环境进行调整
        //激光测距的夹角

        return doubleToFloat(height * Math.sin(Math.PI/180*angleTwo)*1000);
    }

    /**
     * 沉降值位置计算（和上一个公式对应/多少米处收敛值）
     * @param location 所在位置
     * @param height  高
     * @param angle 角度
     * @return
     */
    public static Float settValue(Integer location,Double height,Integer angle){
        return doubleToFloat(location + height * Math.cos(Math.PI/180*angleTwo)* Math.sin(Math.PI/180*angle));
    }

    //将doubl类型转换为float类型 精确到小数点后一位
    public static Float doubleToFloat(Double doubleNumber){
        DecimalFormat decimalFormat = new DecimalFormat("0.0");
        Float floatNumber=Float.parseFloat(decimalFormat.format(doubleNumber));
        return floatNumber;
    }

    //将Float数保留一位小数
    public static Float ToFloat01(Float floatNumber){
        DecimalFormat decimalFormat = new DecimalFormat("0.0");
        return  Float.parseFloat(decimalFormat.format(floatNumber));
    }
}
